import useUserStore from '@/stores/modules/user'

export const hasPermission = (
  requiredPermission: string | undefined,
  permissionList: string[],
): boolean => {
  // 1. 路由无需权限（permission 为空），直接允许访问
  if (!requiredPermission) return true

  // 2. 权限列表包含全量匹配符 *，直接允许所有路由
  if (permissionList.includes('*')) return true

  // 3. 精确匹配：权限列表中存在完全一致的权限字符串
  if (permissionList.includes(requiredPermission)) return true

  // 4. 通配符匹配：处理权限列表中的 * 通配符（如 admin:user* 匹配 admin:user:list）
  return permissionList.some((permission) => {
    // 将权限字符串中的 * 转换为正则表达式（如 admin:user* → ^admin:user.*$）
    const regexPattern = `^${permission.replace(/\*/g, '.*')}$`
    const regex = new RegExp(regexPattern)
    return regex.test(requiredPermission)
  })
}

/***
 * 权限检查
 * @param value
 * @param binding
 */
export function checkPermission(el: { style: { display: string } }, binding: any) {
  const userStore = useUserStore()
  if (userStore.userInfo) {
    if (!hasPermission(binding.value, userStore.userInfo.permissionList)) {
      el.style.display = 'none'
    }
  }
}
